//ts的核心原则时专注于  "值的结构"  的  "类型检查"  ,这有时被叫做结构类型系统
// 在结构类型系统中，如果两个对象具有相同的结构，则认为它们属于同一类型 

// 定义一个类型 Point
interface Point {
    x: number;
    y: number;
  }
   
// 声明函数
  function logPoint(p: Point  /*给形参设置类型 */) {
    console.log(`${p.x}, ${p.y}`);  //打印形参内容
  }

  const rect = { x: 33, y: 3, width: 30, height: 80 };
  logPoint(rect); // logs "33, 3"
   
  // logs "12, 26"
  const point = { x: 12, y: 26 }; //声明一个对象，。未设置类型
  logPoint(point);  //调用函数，把声明的对象传入


  // 结构匹配只需要匹配对象字段的子集。   
  const point3 = { x: 12, y: 26, z: 89 };
logPoint(point3); // logs "12, 26"
 


 
const color = { hex: "#187ABF" };
        //  logPoint(color); 

         const fww = {x:1}
        //  logPoint(fww);

interface A{
  b: number
}
const a:A = {
  a:1
}
const b:A = {
  b:1
}
const c:A = {
  b:1 ,
  c:2
}
// 如果设置了对象